let foo = function() {
  try {
    return 1;
  } catch(err) {
    return 2;
  } finally {
    return 3;
  }
};

let foo = function() {
  try {
    return 1;
  } catch(err) {
    return 2;
  } finally {
    throw new Error;
  }
};

//github
var foo = function() {
  try {
    return 1;
  } catch(err) {
    return 2;
  } finally {
    return 3;
  }
};

var foo = function() { try { return 1 } catch(err) { return 2 } finally { if(true) { return 3 } else { return 2 } } }
var foo = function() { try { return 1 } catch(err) { return 2 } finally { return 3 } }
var foo = function() { try { return 1 } catch(err) { return 2 } finally { return function(x) { return y } } }
var foo = function() { try { return 1 } catch(err) { return 2 } finally { return { x: function(c) { return c } } } }
var foo = function() { try { return 1 } catch(err) { return 2 } finally { throw new Error() } }
var foo = function() { try { foo(); } finally { try { bar(); } finally { return; } } };
var foo = function() { label: try { return 0; } finally { break label; } return 1; }
var foo = function() {
  a: try {
    return 1;
  } catch(err) {
    return 2;
  } finally {
    break a;
  }
};

var foo = function() { while (true) try {} finally { break; } }
var foo = function() { while (true) try {} finally { continue; } }
var foo = function() { switch (true) { case true: try {} finally { break; } } }
var foo = function() { a: while (true) try {} finally { switch (true) { case true: break a; } } }
var foo = function() { a: while (true) try {} finally { switch (true) { case true: continue; } } }
var foo = function() { a: switch (true) { case true: try {} finally { switch (true) { case true: break a; } } } }